#include <stdio.h>
#include <stdlib.h>
#define PAGELINE    24
#define LINELEN     512
int see_more(FILE *cmd)
{
    int c;

    printf("\033[7m more?\033[m");
    
    while ((c = getc(cmd)) != EOF) {
        if (c == 'q') {
            return 0;
        }
        if (c == ' ') {
            return PAGELINE;
        }
        if (c == '\n') {
            return 1;
        }
    }
    return 0;
}
void do_more(FILE *fp)
{
    char line[LINELEN];
    int num_of_lines = 0;
    int reply;
    FILE *fp_tty;
    fp_tty = fopen("/dev/tty","r");
    if (fp_tty == NULL) {
        exit(1);
    }
    while (fgets(line,LINELEN,fp)) {
        if (num_of_lines == PAGELINE) {
            reply = see_more(fp_tty);
            if (reply == 0) {
                break;
            }
            num_of_lines -= reply;
        }
        if (fputs(line,stdout) == EOF) {
            exit(1);
        }
        num_of_lines ++;
    }
}
int main(int agc,char *agv[])
{
    FILE *fp;
   if (agc == 1) {
        do_more(stdin);
    }
    else {
        while (--agc) {
            if ((fp = fopen(*++agv,"r")) != NULL) {
                do_more(fp);
                fclose(fp);
            }
            else
                exit(1);
        }
    }
    return 0;
}
